Session Initiation Protocol (SIP) is an open signaling protocol for establishing many kinds of real-time communication sessions. Examples of the types of communication sessions that may be established using SIP include voice, video, and/or instant messaging. These communication sessions may be carried out on any type of communication device such as a personal computer, laptop computer, telephone, Personal Digital Assistant, etc. One key feature of SIP is its ability to use an end-user's Address of Record (AOR) as a single unifying public address for all communications. Thus, in a world of SIP-enhanced communications, a user's AOR becomes their single address that links the user to all of the communication devices associated with the user. Using this AOR, a caller can reach any one of the user's communication devices, also referred to as User Agents (UAs) without having to know each of the unique device addresses or phone numbers.
The concept of an Application Router has been described with the Java Specification Request (JSR) 289 specification. An Application Router is responsible for application composition. Within this context, application composition is the process of “chaining” multiple applications together into a logical sequence. When multiple applications are chained together, an application will process a given SIP message and once it is done with the needed processing, the application passes the SIP message to the next application in the chain.
Examples of SIP applications which may be included in an application composition include a presence application, a contact resolution application, a call setup application, a blacklist application, a voicemail application, and any other application which provides some sort of feature within the SIP architecture. Each of these applications may comprise two or more modules therein which execute certain functions to provide the overall feature offered by the application.